package com.testStream;


import org.junit.Test;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author cxt
 * @date 2020/8/26
 */
@RestController
@RequestMapping("/stream")
public class StreamTest {

    @Test
    public void test() {
        List<String> list = new ArrayList();
        list.add("admin112");
        list.add("boot");
        list.add("dd0");
        list.add("dd1");

        // 中间操作
        List<String> list1 = list.stream().filter(e -> e.length() > 4).collect(Collectors.toList());
        System.out.println(list1); // 过滤，把长度大于4的留下
        System.out.println("-------中间操作结束---------\n");

        // 终结操作
        boolean dd = list.stream().allMatch(r -> r.length() > 2); // true 因为全部匹配都是true
        System.out.println(dd);
        boolean dd1 = list.stream().anyMatch(r -> r.length() > 4); // true 因为有一个匹配的是true
        System.out.println(dd1);
        boolean dd2 = list.stream().noneMatch(r -> r.length() > 8); // true 因为有一个匹配的是false
        System.out.println(dd2);

        Stream<Integer> stream = Stream.of(1, 2, 3, 4);
        System.out.println("\n组合"); // stream只能使用一次
//        System.out.println(stream.reduce(100, Integer::sum)); // 110
//        System.out.println(stream.reduce(Integer::sum).orElse(0)); // 求和
//        System.out.println(stream.reduce(Integer::max).orElse(0)); // 求max
        System.out.println(stream.reduce(Integer::min).orElse(0)); // 求min
    }


}

